% fname: routing_xy__topology_8x8__.m
% ./noxim -routing xy -dimx 8 -dimy 8  -sim 10000 -warmup 2000 -size 8 8 -traffic transpose1 -buffer 4 

function [max_pir, max_throughput, min_delay] = routing_xy__topology_8x8__(symbol)

data = [
%             pir      avg_delay     throughput      max_delay       rpackets         rflits
            0.008        31.9944      0.0638184            734           4086          32675
            0.008        28.5522      0.0637012            339           4080          32615
            0.008        33.6101      0.0635391            370           4063          32532
            0.008        36.4738       0.064748            580           4147          33151
            0.008        38.8284      0.0624688           1756           3997          31984
            0.008        48.7912       0.065207           1248           4172          33386
            0.008        37.2305      0.0646191            660           4134          33085
            0.008        63.6236      0.0634941           2620           4062          32509
            0.008        31.9932       0.064668            912           4139          33110
            0.008        31.6016       0.063293            609           4051          32406
            0.008        28.9204      0.0630684            384           4033          32291
            0.008        40.0829      0.0625273            780           4003          32014
            0.008        31.9664      0.0646836            454           4143          33118
            0.008        41.2465      0.0643398           1216           4122          32942
            0.008        28.9694      0.0637383            494           4079          32634
            0.008         33.081       0.063832            743           4086          32682
            0.008         33.858       0.065166           1082           4169          33365
            0.008        29.1768      0.0630938            548           4038          32304
            0.008        39.6341      0.0625957           1198           4004          32049
            0.008        41.1692      0.0642266           1313           4114          32884
           0.0088        58.9875      0.0699629           1368           4477          35821
           0.0088        84.0142      0.0692402           3718           4432          35451
           0.0088        82.3782      0.0712754           2424           4561          36493
           0.0088        99.8619      0.0701621           5028           4489          35923
           0.0088        80.9594       0.069207           3167           4430          35434
           0.0088         50.056        0.06975           1500           4464          35712
           0.0088        44.0629      0.0708789            978           4534          36290
           0.0088        67.0789      0.0708105           2054           4535          36255
           0.0088        45.8553      0.0704141           1040           4506          36052
           0.0088        49.4254      0.0717344            867           4589          36728
           0.0088        57.5744       0.071502           1310           4575          36609
           0.0088        60.0728      0.0704121           1742           4505          36051
           0.0088        74.9124      0.0704727           1977           4510          36082
           0.0088        75.4648      0.0710215           1615           4546          36363
           0.0088        73.0416       0.071123           3028           4548          36415
           0.0088        77.7082      0.0708008           2205           4531          36250
           0.0088        49.0722      0.0699707           1219           4476          35825
           0.0088        106.431      0.0706719           4112           4521          36184
           0.0088        62.5993      0.0700293           2411           4482          35855
           0.0088        46.0442      0.0685449           2022           4386          35095
           0.0096         89.915       0.076082           4282           4872          38954
           0.0096        115.188      0.0750254           5080           4799          38413
           0.0096        97.8519      0.0753496           3722           4821          38579
           0.0096        99.7491      0.0753691           3497           4822          38589
           0.0096        103.618      0.0755117           4804           4831          38662
           0.0096        129.381      0.0755039           5165           4832          38658
           0.0096        107.061      0.0753613           3623           4824          38585
           0.0096        121.011      0.0756641           4776           4840          38740
           0.0096        91.3819      0.0750449           3529           4805          38423
           0.0096        114.347      0.0766074           5425           4899          39223
           0.0096        128.353       0.075127           5935           4807          38465
           0.0096        142.126      0.0772012           6939           4940          39527
           0.0096        117.762      0.0767988           4794           4913          39321
           0.0096        88.7837      0.0772246           4646           4943          39539
           0.0096        110.025      0.0756074           5717           4838          38711
           0.0096        93.8165      0.0740254           4372           4735          37901
           0.0096        121.397      0.0774492           5536           4958          39654
           0.0096        94.6075      0.0765645           3467           4899          39201
           0.0096        132.479      0.0764395           5156           4891          39137
           0.0096        96.4047      0.0755781           3927           4838          38696
           0.0104        196.468      0.0803477           6353           5141          41138
           0.0104        138.056      0.0811562           6463           5196          41552
           0.0104        170.527      0.0808047           6640           5172          41372
           0.0104        174.197      0.0807578           6292           5168          41348
           0.0104        186.008      0.0814844           6844           5214          41720
           0.0104        149.506       0.080043           7371           5122          40982
           0.0104        153.091      0.0791426           7152           5064          40521
           0.0104        137.829      0.0798926           5906           5112          40905
           0.0104        170.725      0.0800488           5909           5123          40985
           0.0104        118.646        0.07925           7527           5073          40576
           0.0104         156.72      0.0810801           6163           5188          41513
           0.0104        143.121      0.0793242           6521           5079          40614
           0.0104        146.499      0.0796777           5297           5097          40795
           0.0104         141.92      0.0809355           5501           5180          41439
           0.0104        141.719      0.0796602           6195           5096          40786
           0.0104        141.585      0.0799883           7464           5120          40954
           0.0104        165.087       0.080541           6849           5158          41237
           0.0104        198.565      0.0799453           8099           5117          40932
           0.0104        153.795      0.0811973           5795           5195          41573
           0.0104        187.622      0.0808477           5884           5175          41394
           0.0112        213.952      0.0845801           7082           5412          43305
           0.0112        212.448       0.083252           7803           5330          42625
           0.0112        249.662      0.0849336           8031           5437          43486
           0.0112        237.332      0.0860675           6944           5420          43378
           0.0112        190.367      0.0848477           7597           5431          43442
           0.0112        238.631      0.0845527           7591           5412          43291
           0.0112        223.897      0.0836055           6331           5352          42806
           0.0112        215.238      0.0823711           8357           5271          42174
           0.0112        203.022      0.0828789           6737           5303          42434
           0.0112        167.944      0.0846738           9056           5421          43353
           0.0112        226.477      0.0836094           7304           5354          42808
           0.0112        170.707      0.0853887           5493           5463          43719
           0.0112        223.734      0.0847242           7453           5336          42701
           0.0112        224.596      0.0842676           7969           5393          43145
           0.0112        196.237      0.0846602           8762           5420          43346
           0.0112        221.759      0.0839336           6910           5372          42974
           0.0112        225.297      0.0845469           8750           5411          43288
           0.0112        207.205      0.0863672           8224           5529          44220
           0.0112        201.356      0.0861875           6975           5519          44128
           0.0112         171.57      0.0854414           8053           5469          43746
            0.012        249.192      0.0888809           8377           5689          45507
            0.012        239.195      0.0880078           9381           5634          45060
            0.012        217.581      0.0899023           6999           5756          46030
            0.012        236.054      0.0884629           9198           5662          45293
            0.012        219.525       0.087582           8846           5606          44842
            0.012        264.884      0.0880078           7677           5633          45060
            0.012        214.173      0.0880996           9421           5641          45107
            0.012        229.043      0.0889336           8511           5694          45534
            0.012        226.666      0.0907619           7785           5717          45744
            0.012        228.184      0.0887656           9129           5683          45448
            0.012        261.268      0.0870703           8128           5570          44580
            0.012        217.634      0.0902321           8719           5687          45477
            0.012        212.609      0.0884277           7964           5661          45275
            0.012        228.577       0.086791           8233           5555          44437
            0.012        205.212      0.0880371           6230           5635          45075
            0.012        219.754      0.0865469           8194           5541          44312
            0.012        253.171      0.0890159           8058           5612          44864
            0.012        209.203      0.0890898           8618           5703          45614
            0.012        227.316      0.0881836           8671           5644          45150
            0.012        221.003       0.090416           7689           5788          46293
           0.0128        283.991      0.0913789           7811           5848          46786
           0.0128        262.902      0.0929782           8172           5857          46861
           0.0128        291.277       0.091754           9269           5779          46244
           0.0128        245.874      0.0944107           6782           5947          47583
           0.0128        258.369       0.093625           8074           5896          47187
           0.0128        315.883      0.0903945           8914           5788          46282
           0.0128        297.872      0.0925417           8287           5828          46641
           0.0128        217.822      0.0908926           7242           5817          46537
           0.0128         297.91      0.0949821           7801           5983          47871
           0.0128        276.969      0.0907949           8367           5814          46487
           0.0128        296.255      0.0903203           8905           5780          46244
           0.0128        253.543      0.0920449           9363           5890          47127
           0.0128        309.075      0.0916406           8817           5864          46920
           0.0128        281.455      0.0950139           7741           5984          47887
           0.0128        283.037      0.0945933           7430           5961          47675
           0.0128        316.662      0.0933477           9348           5975          47794
           0.0128         320.02      0.0915664           7858           5860          46882
           0.0128         269.08       0.092373           8005           5909          47295
           0.0128        248.787      0.0915645           8245           5860          46881
           0.0128        290.559      0.0930198           8870           5861          46882
           0.0136        331.665       0.096879           8286           6100          48827
           0.0136        353.497      0.0951587           8531           5993          47960
           0.0136        340.908      0.0980081           8084           6077          48612
           0.0136        323.114      0.0984819           9258           6105          48847
           0.0136        379.108      0.0948333           8437           5972          47796
           0.0136        332.071      0.0949082           9017           6075          48593
           0.0136        354.434      0.0958234           8915           6037          48295
           0.0136        346.232      0.0947103           9503           5969          47734
           0.0136        321.173       0.095502           8564           6016          48133
           0.0136        317.255      0.0942758           8689           5939          47515
           0.0136         301.77      0.0946641           8457           6058          48468
           0.0136        284.537      0.0961667           8334           6058          48468
           0.0136        305.858       0.095998           9270           5952          47615
           0.0136        335.571      0.0966548           8189           6089          48714
           0.0136        333.777      0.0944512           8679           6045          48359
           0.0136        309.553      0.0940079           8434           5926          47380
           0.0136         322.24       0.095244           9097           6000          48003
           0.0136        293.763      0.0988952           9001           6131          49052
           0.0136        365.385      0.0963294           8969           6066          48550
           0.0136        310.857      0.0962202           8440           6060          48495
           0.0144        414.433       0.101652           8904           6202          49606
           0.0144        350.904       0.100258           8869           6215          49728
           0.0144        424.496        0.10053           8266           6233          49863
           0.0144        395.174      0.0985496           8656           6209          49669
           0.0144        423.651       0.100559           9184           6134          49073
           0.0144        430.867       0.101147           9138           6273          50169
           0.0144         342.81            0.1           8573           6198          49600
           0.0144         327.24      0.0997923           9049           6189          49497
           0.0144        442.243       0.100321           8377           6220          49759
           0.0144        384.897      0.0978066           8343           6259          50077
           0.0144        387.794      0.0976746           8536           6154          49228
           0.0144         370.83      0.0983552           8972           6196          49571
           0.0144        391.584       0.100373           9137           6226          49785
           0.0144        395.173        0.10154           9183           6294          50364
           0.0144        376.882       0.102141           8828           6232          49845
           0.0144        393.345       0.100016           9160           6100          48808
           0.0144        345.175      0.0999901           8441           6300          50395
           0.0144        418.427       0.100056           8299           6203          49628
           0.0144        406.854      0.0991512           8619           6147          49179
           0.0144        409.782       0.100546           9664           6335          50675
           0.0152          473.7       0.102966           8723           6383          51071
           0.0152        456.389       0.103226           8737           6399          51200
           0.0152        397.959       0.105461           9398           6435          51465
           0.0152        412.995       0.103452           9066           6414          51312
           0.0152        444.753        0.10333           8842           6303          50425
           0.0152        442.597       0.103766           9577           6330          50638
           0.0152        491.119       0.103079           8679           6390          51127
           0.0152        446.373       0.104302           9405           6467          51734
           0.0152        510.822       0.105119           8452           6413          51298
           0.0152        524.281       0.102099           9009           6329          50641
           0.0152        468.569       0.103643           9433           6427          51407
           0.0152        507.066       0.105822           9390           6458          51641
           0.0152        429.833       0.101413           9184           6287          50301
           0.0152        512.198       0.105154           8894           6413          51315
           0.0152        463.223       0.102478           8905           6355          50829
           0.0152        482.952       0.105889           9141           6461          51674
           0.0152        403.738       0.104916           8046           6401          51199
           0.0152        468.325       0.102353           9347           6349          50767
           0.0152        441.545       0.103625           8912           6321          50569
           0.0152        496.593        0.10631           8729           6379          51029
];

rows = size(data, 1);
cols = size(data, 2);

data_delay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+1);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_delay = [data_delay; data(ifirst, 1:cols-5), avg ci];
end

figure(1);
hold on;
plot(data_delay(:,1), data_delay(:,2), symbol);

data_throughput = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+2);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_throughput = [data_throughput; data(ifirst, 1:cols-5), avg ci];
end

figure(2);
hold on;
plot(data_throughput(:,1), data_throughput(:,2), symbol);

data_maxdelay = [];
for i = 1:rows/20,
   ifirst = (i - 1) * 20 + 1;
   ilast  = ifirst + 20 - 1;
   tmp = data(ifirst:ilast, cols-5+3);
   avg = mean(tmp);
   [h sig ci] = ttest(tmp, 0.1);
   ci = (ci(2)-ci(1))/2;
   data_maxdelay = [data_maxdelay; data(ifirst, 1:cols-5), avg ci];
end

figure(3);
hold on;
plot(data_maxdelay(:,1), data_maxdelay(:,2), symbol);


%-------- Saturation Analysis -----------
slope=[];
for i=2:size(data_throughput,1),
    slope(i-1) = (data_throughput(i,2)-data_throughput(i-1,2))/(data_throughput(i,1)-data_throughput(i-1,1));
end

for i=2:size(slope,2),
    if slope(i) < (0.95*mean(slope(1:i)))
        max_pir = data_throughput(i, 1);
        max_throughput = data_throughput(i, 2);
        min_delay = data_delay(i, 2);
        break;
    end
end
